package Pojo;

import java.util.ArrayList;

/**Classe para objetos do tipo Fornecedor, onde serão contidos, valores e métodos 
* para o mesmo
 * 
 * @author Vitor
 */
public class Fornecedor implements Comparable<Fornecedor>{
    
    /**
     * Lista de atributos da classe fornecedor
     */
    private String nome;
    private int codigo;
    private String endereco;
    private int telefone;
    private ArrayList<Item> listaItens = new ArrayList<Item>();
    
    /**
     * Metodo construtor da classe Fornecedor
     */
    public Fornecedor(){
    }
    
    /**Metodo construtor que visa cadastrar um fornecedor com no minimo um nome e codigo de identificação
     * @param nome - nome do fornecedor
     * @param codigo - codigo do fornecedor
     */
    public Fornecedor(String nome,int codigo){
        this.nome=nome;
        this.codigo=codigo;
    }
    
    /**Metodo construtor que visa criar um fornecedor com todos os atributos preenchidos
     * @param nome - nome do forncedor
     * @param codigo - codigo do fornecedor
     * @param endereco - endereco do fornecedor
     * @param telefone - telefone do fornecedor
     */
    public Fornecedor(String nome, int codigo, String endereco, int telefone){
        this(nome,codigo);
        this.endereco= endereco;
        this.telefone= telefone;
    } 
    
    /**Metodo que retorna o nome do fornecedor
     * @return String - nome do fornecedor
     */
     public String getNome() {
        return nome;
    }  
    
    /**Metodo para atribuir o nome do fornecedor
     * @param nome - nome do fornecedor
     */
    public void setNome(String nome) {
        this.nome = nome;
    }
    
    /**Metod que retorna o codigo do fornecedor
     * @return int - codigo do fornecedor
     */
    public int getCodigo() {
        return codigo;
    }

    /**Metodo que atribui o codigo do fornecedor
     * @param codigo - codigo do fornecedor
     */
    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    /**Metodo que retorna o endereco do fornecedor
     * @return String - Endereco do fornecedor
     */
    public String getEndereco() {
        return endereco;
    }
    
    /**Metodo que atribui um endereco ao forncedor
     * @param endereco - Endereco do forncedor
     */
    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    /**Metodo que retorna o telefone
     * @return int - telefone do forncedor
     */
    public int getTelefone() {
        return telefone;
    }
    
    /**Metodo que atribui um telefone ao fornecedor
     * @param telefone - telefone do fornecedor
     */
    public void setTelefone(int telefone) {
        this.telefone = telefone;
    }
    
    /**Metodo que adiciona um item na lista de itens do fornecedor
     * @param item - um item cadastrado
     */
    public void adicionarItem(Item item){
        this.listaItens.add(item);
    }
    
    /** Metodo que retorna a lista de itens do fornecedor
     * @return ArrayList - lista de itens de um fornecedor
     */
    public ArrayList<Item> getListaItens() {
        return listaItens;
    }
    
    /**
     * 
     * @param itemAux Item - Contem informacoes de um item
     * @return null - Nao tem retorno
     */
    public Object getListaItens(Item itemAux) {
        throw new UnsupportedOperationException("Not supported yet."); 
        //To change body of generated methods, choose Tools | Templates.
    }
    
    /**Metodo equals sobreescrito para comparar o atributo nome do objeto fornecedor
     * @param obj - objeto do tipo forncedor
     * @return boolean - true caso sejam iguais false caso não sejam do mesmo tipo
     */
    public boolean equals (Object obj) {
        
        if(!(obj instanceof Fornecedor)){
            return false;
        }
        Fornecedor fornecedor = (Fornecedor)obj;
        return (this.nome.equals(fornecedor.nome));
    }
      
    /**Metodo CompareTo sobreescrito para comparar o atributo nome do objeto fornecedor
     
     */
    
    public int compareTo(Fornecedor fornecedor) {
        if (this.nome.compareTo(fornecedor.getNome())<=-1) {
            return -1;
        }else if (this.nome.compareTo(fornecedor.getNome())>=1) {
            return 1;
        }
        return 0;
    }
}
